package com.jy.datapipeline.common.constants;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @类名 ExcelConstants
 * @描述 导入模块的excel常量
 * @作者 白条君
 * @创建日期 2023/8/7 16:33
 * @版本 1.0
 */
public interface ExcelConstants {

    List<String> IMPORT_RULE_TEMPLATE_COLUMNS = Arrays.asList("规则名称", "来源数据库名称", "目标数据库名称", "分隔符", "导入方式",
            "导入模式", "sid", "sqlldr参数", "来源schema名称", "来源表名称", "目标schema名称", "目标表名称", "目标字段列表",
            "目标表类型", "目标动态表规则", "函数值", "地址编码");

    List<String> IMPORT_RULE_TEMPLATE_COMMENTS = Arrays.asList("不可为空，且唯一", "不可为空", "不可为空", "不可为空，且不可为中文或者数字", "不可为空，0：追加，1：覆盖", "不可为空，只支持sqlldr工具导入模式，填入值为1", "不可为空", "不可为空", "不可为空", "不可为空",
            "不可为空", "不可为空", "不可为空\n名称、类型、格式之间以空格分割，字段名后必须带上类型，如果是日期类型必须带上日期格式，字段信息末尾以'，'结束，同时必须换行", "0：动态表，1：非动态表", "如果是动态表，动态表规则不可为空，且动态表规则为：ADDMONTHS",
            "如果是动态表，函数值不可为空", "");

    List<String> IMPORT_RULE_TEMPLATE_EXAMPLE = Stream.of("rule_example", "CHBRM", "YYE", "<|>", "0", "1", "008", "errors=0 bindsize=20000000 direct=false parallel=false silent=header feedback discards partitions",
                    "MASAKR", "TB_KR_4GF4GWL_BOSS_LIST_MON", "so5", "jf_dst_custgroup_data_f", "real_region_id varchar,\n" +
                            "bill_id varchar,\n" +
                            "region_id varchar,\n" +
                            "create_date timestamp \"YYYY-MM-DD HH24:MI:SS\",\n" +
                            "dst_custgroup_id numeric,\n" +
                            "opr_type varchar,\n" +
                            "state varchar", "0", "ADDMONTHS", "0", "392")
            .collect(Collectors.toList());

    String IMPORT_RULE_TEMPLATE_NAME = "导入规则模版_";

    String IMPORT_RULE_TEMPLATE_SHEET_NAME = "《批量导入规则配置模板》";

    String IMPORT_TASk_TEMPLATE_NAME = "导入任务模版_";

    List<String> IMPORT_TASK_TEMPLATE_COLUMNS = Stream.of("任务名称", "导入规则", "存储名称", "任务类型", "数据周期间隔",
            "数据周期单位", "任务启动时间", "crontab执行计划", "任务重试次数", "任务重试间隔(分钟)", "业务标签").collect(Collectors.toList());

    List<String> IMPORT_TASK_TEMPLATE_COMMENTS = Arrays.asList("不可为空，且唯一", "不可为空", "不可为空", "不可为空\n且类型只能是0：自动执行，或1：手动执行",
            "不可为空，且只能是数字", "不可为空，且只能是0：月，1：日，2：时，3：分", "如果是自动任务类型，启动时间不可为空", "如果是自动任务类型，crontab执行计划不可为空", "", "", "");

    String IMPORT_TASK_TEMPLATE_SHEET_NAME = "《批量导入任务配置模板》";

    List<String> IMPORT_TASK_TEMPLATE_EXAMPLE = Arrays.asList("task_example", "rule_example", "store_example", "0", "5", "2", "2023-08-10 00:00:00", "0 0/30 * * * ?", "3", "5", "business_tag_example");

    List<String> EXPORT_RULE_TEMPLATE_COLUMNS = Arrays.asList("导出规则名称", "数据源ID", "列分割符", "schema名称", "表名称"
            , "表类型", "动态表规则", "动态表规则函数值", "输出列", "过滤规则", "过滤列", "数据周期单位", "数据周期间隔"
            , "分片键", "单文件最大行数");

    List<String> EXPORT_RULE_TEMPLATE_COMMENTS = Arrays.asList("长度50，必选是唯一", "", "", ""
            , "导出表的名称", "0 非动态表,1 动态表", "只能选这三个值\nYYYY\nYYYYMM\nADDMONTHS", "如果动态表规则是ADDMONTHS，函数值不可省略"
            , "输出列的字段之间用\",\"分割", "1：全部数据\n2：部分表数据\n3：自定义查询语句",
            "部分表数据时：row_range此时它是where条件后面的语句，例如：H_C_ID<=400\n自定义查询语句时：row_range此时它是完整的sql语句，同时输出列可以是空的，如果填写了，运行中也不会使用"
            , "数据周期间隔单位：Y,M,D,H,MI", "数据周期间隔值，不能为空值", "分片键可以为空", "行数单位是万");

    List<String> EXPORT_RULE_TEMPLATE_EXAMPLE = Arrays.asList("rule_example", "source_1663904192248",
            "&&", "schema_example", "table_name_example", "1", "ADDMONTHS", "1", "TIMESTAMP,MODEBTIME,CURMODE", "1", "", "D", "2", "TIMESTAMP", "5");

    List<String> EXPORT_TASK_TEMPLATE_COLUMNS = Arrays.asList("任务名称", "数据源名称", "导出规则", "存储名称", "任务类型", "定时时间", "业务标签", "城市编码");

    List<String> EXPORT_TASK_TEMPLATE_COMMENTS = Arrays.asList("不能为空", "不能为空", "不能为空", "不能为空", "不能为空\n1：手动任务\n2：定时任务", "任务类型是定时任务，则必须有定时时间", "", "不能为空");

    List<String> EXPORT_TASK_TEMPLATE_EXAMPLE = Arrays.asList("task_example", "datasource_example", "rule_example", "store_example", "2", "0/10 * * * * ?", "business_name_example", "郑州");

    String EXPORT_TASK_TEMPLATE_SHEET_NAME = "《批量导出任务配置模板》";

    String EXPORT_RULE_TEMPLATE_SHEET_NAME = "《批量导出规则配置模板》";

    String EXPORT_RULE_TEMPLATE_NAME = "导出规则模版_";

    String EXPORT_TASK_TEMPLATE_NAME = "导出任务模版_";
}
